【CDI】Informatica Cloud Data Integrationでターゲットファイルを作成せずに入出力パラメータに値を代入する方法
こんにちは、データアナリティクス事業本部ビジネスソリューション部SAチームの渡部(わたなべ)です。
今回はインフォマティカ製品のデータ統合「Cloud Data Integration(以下、CDI)」のマッピングにおいて、ターゲットファイルを出力せずに入出力パラメータに値を代入する方法をご紹介いたします。
実現すること
今回作成したタスクフロー全体図は以下となります。
1つ目のデータタスクのマッピングで、ソースデータから値を抽出して、入出力パラメータに値を代入します。
2つ目の通知タスクで、入出力パラメータの値を個人メールアドレス宛に送信し、値が代入されていることを確認します。
今回ご紹介する方法は、以下のケースで有用かと思います。
- ソースデータを入出力パラメータに代入して、その値を後続の処理で使用したい
- 例えば、それぞれのジョブの最終実行日時を持つテーブルから日時を抽出して入出力パラメータに代入して、後続で差分抽出に使うケース
- マッピングでファイルを出力したくない
実装
マッピング全体図は以下の通りです。
1. データ抽出
ソースデータから入出力パラメータに代入したい値を抽出します。
用意したソースデータは以下で、抽出したlast_upd_time
を入出力パラメータlc_param_last_upd_time
に代入します。
id | last_upd_time |
---|---|
tableA | 2023-10-01 10:20:35 |
2. 入出力パラメータに値を代入
まずは式トランスフォーメーションで変数フィールドを用意します。
続いて式を記述します。
入出力パラメータに値を代入する関数 SetVariable
を使用します。
これでlc_param_last_upd_time
にlast_upd_time
を代入することができます。
3. /dev/nullを指定する
ターゲット接続はフラットファイル接続で、ディレクトリは /
を指定しています。
/dev/nullにアクセスできる接続が作成できていれば問題ありません。
ターゲットオブジェクトでは 実行時に新規作成
を選択し、静的ファイルに dev/null
と記載します(Windows環境ならば、nul
ですね)。
このようにすると、/dev/null
はnullデバイスなのでファイルが出力されずにマッピングの実行が可能となります。
2023/10/11追記) 以下Tipsは非推奨です。
Tipsになりますが、もしも/
にInformaticaのユーザーが書き込み権限がない場合は、接続を作成することができません。
その場合は、/dev/null
のシンボリックリンクを作成して、ターゲットオブジェクトでシンボリックリンクを指定すれば同様のことが実現できます。
lrwxrwxrwx 1 root root 9 May 8 13:55 devnull -> /dev/null
なお、その際はフィールドマップオプションを「自動」にしなければ、マッピングの検証でエラーとなってしまうので、注意が必要です。
あとは、マッピングタスクとタスクフローを作成すれば完了です。
まとめ
メールに想定通り入出力パラメータの値が出力されました。
以上、マッピングでファイルを出力せずに入出力パラメータに値を代入する方法でした。
入出力パラメータの代入をCDIだけで実現したい場合に、この方法を使っていただけたらと思います。
ありがとうございました!